package top.malaoshi.webmvc.info;

import org.springframework.web.bind.annotation.RequestMethod;

/**
 * 封装 RequestMapping、GetMapping、PostMapping等注解信息
 */
public class RequestMappingInfo {

    // 包含注解中path和value
    private String[] valuesAndPaths;
    /**
     * 支持的请求方法
     */
    private RequestMethod[] methods;

    public RequestMappingInfo(String[] valueAndPath, RequestMethod[] methods) {
        this.valuesAndPaths = valueAndPath;
        this.methods = methods;
    }
    public static RequestMappingInfo of(String[] valueAndPath, RequestMethod[] methods) {
        return new RequestMappingInfo(valueAndPath, methods);
    }

    public String[] getValuesAndPaths() {
        return valuesAndPaths;
    }

    /**
     * 判断是否支持该请求方法
     * @param method
     * @return
     */
    public boolean checkMethod(RequestMethod method){
        // 如果没有允许的方法，说明使用的是 @RequestMapping 注解，并且没有指定Method，此时表示支持所有方法
        if(this.methods == null || this.methods.length == 0){
            return true;
        }
        for(RequestMethod item : this.methods){
            if(item == method){
                return true;
            }
        }
        return false;
    }
}
